using System;

namespace JGSY.CMS.LowCode.Platform.Application.DTOs
{
    /// <summary>
    /// 翻译数据传输对象
    /// 用于多语言翻译管理的数据传输
    /// </summary>
    public class TranslationDto
    {
        /// <summary>
        /// 翻译ID
        /// </summary>
        public Guid Id { get; set; }
        
        /// <summary>
        /// 语言ID
        /// </summary>
        public Guid LanguageId { get; set; }
        
        /// <summary>
        /// 语言代码
        /// </summary>
        public string LanguageCode { get; set; } = string.Empty;
        
        /// <summary>
        /// 语言名称
        /// </summary>
        public string? LanguageName { get; set; }
        
        /// <summary>
        /// 翻译键 (资源键)
        /// </summary>
        public string Key { get; set; } = string.Empty;
        
        /// <summary>
        /// 翻译值
        /// </summary>
        public string Value { get; set; } = string.Empty;
        
        /// <summary>
        /// 原文 (默认语言的文本)
        /// </summary>
        public string? OriginalValue { get; set; }
        
        /// <summary>
        /// 翻译分组 (如: common, validation, menu)
        /// </summary>
        public string? Group { get; set; }
        
        /// <summary>
        /// 翻译分类 (如: ui, content, error)
        /// </summary>
        public string? Category { get; set; }
        
        /// <summary>
        /// 翻译命名空间
        /// </summary>
        public string? Namespace { get; set; }
        
        /// <summary>
        /// 翻译描述或备注
        /// </summary>
        public string? Description { get; set; }
        
        /// <summary>
        /// 上下文信息 (帮助翻译者理解使用场景)
        /// </summary>
        public string? Context { get; set; }
        
        /// <summary>
        /// 翻译状态 (pending, translated, approved, rejected)
        /// </summary>
        public string TranslationStatus { get; set; } = "pending";
        
        /// <summary>
        /// 是否需要审核
        /// </summary>
        public bool RequireReview { get; set; } = false;
        
        /// <summary>
        /// 审核状态 (pending, approved, rejected)
        /// </summary>
        public string? ReviewStatus { get; set; }
        
        /// <summary>
        /// 审核意见
        /// </summary>
        public string? ReviewComment { get; set; }
        
        /// <summary>
        /// 是否为复数形式
        /// </summary>
        public bool IsPlural { get; set; } = false;
        
        /// <summary>
        /// 复数规则 (JSON格式)
        /// </summary>
        public string? PluralRules { get; set; }
        
        /// <summary>
        /// 是否包含变量
        /// </summary>
        public bool HasVariables { get; set; } = false;
        
        /// <summary>
        /// 变量信息 (JSON格式)
        /// </summary>
        public string? Variables { get; set; }
        
        /// <summary>
        /// 字符长度限制
        /// </summary>
        public int? MaxLength { get; set; }
        
        /// <summary>
        /// 使用次数
        /// </summary>
        public int UsageCount { get; set; } = 0;
        
        /// <summary>
        /// 优先级 (1-5, 5为最高)
        /// </summary>
        public int Priority { get; set; } = 1;
        
        /// <summary>
        /// 翻译来源 (manual, automatic, imported)
        /// </summary>
        public string Source { get; set; } = "manual";
        
        /// <summary>
        /// 翻译工具 (如果是自动翻译)
        /// </summary>
        public string? TranslationTool { get; set; }
        
        /// <summary>
        /// 翻译置信度 (0-1，用于自动翻译)
        /// </summary>
        public decimal? Confidence { get; set; }
        
        /// <summary>
        /// 翻译者ID
        /// </summary>
        public Guid? TranslatorId { get; set; }
        
        /// <summary>
        /// 翻译者姓名
        /// </summary>
        public string? TranslatorName { get; set; }
        
        /// <summary>
        /// 审核者ID
        /// </summary>
        public Guid? ReviewerId { get; set; }
        
        /// <summary>
        /// 审核者姓名
        /// </summary>
        public string? ReviewerName { get; set; }
        
        /// <summary>
        /// 翻译时间
        /// </summary>
        public DateTime? TranslatedAt { get; set; }
        
        /// <summary>
        /// 审核时间
        /// </summary>
        public DateTime? ReviewedAt { get; set; }
        
        /// <summary>
        /// SEO标题
        /// </summary>
        public string? SeoTitle { get; set; }
        
        /// <summary>
        /// SEO关键词
        /// </summary>
        public string? SeoKeywords { get; set; }
        
        /// <summary>
        /// SEO描述
        /// </summary>
        public string? SeoDescription { get; set; }
        
        /// <summary>
        /// 自定义标签 (JSON格式)
        /// </summary>
        public string? Tags { get; set; }
        
        /// <summary>
        /// 版本号
        /// </summary>
        public string Version { get; set; } = "1.0.0";
        
        /// <summary>
        /// 状态
        /// </summary>
        public string Status { get; set; } = "Active";
        
        /// <summary>
        /// 创建者ID
        /// </summary>
        public Guid? CreatedById { get; set; }
        
        /// <summary>
        /// 创建者姓名
        /// </summary>
        public string? CreatedByName { get; set; }
        
        /// <summary>
        /// 更新者ID
        /// </summary>
        public Guid? UpdatedById { get; set; }
        
        /// <summary>
        /// 更新者姓名
        /// </summary>
        public string? UpdatedByName { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedAt { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? UpdatedAt { get; set; }
        
        /// <summary>
        /// 最后使用时间
        /// </summary>
        public DateTime? LastUsedAt { get; set; }
        
        /// <summary>
        /// 扩展属性 (JSON格式)
        /// </summary>
        public string? ExtendedProperties { get; set; }
    }
}
